GUID (Global unikal identifikator) (ing. Globally Unique Identifier) — 128-bitlik unikal identifikator. Onun başlıca özəlliyi, üst-üstə düşmə səbəbindən yaranan toqquşmalar təhlükəsindən çəkinmədən genişlənən servislər və tətbiqi proqramlar yaratmağa imkan verən bənzərsizlikdir. Hər bir ayrıca GUID üçün unikallığa zəmanət verilməsə də, bənzərsiz açarların ümumi sayı o qədər böyükdür ki, (2128 və ya 3.4028×1038) dünyada bir-birindən asılı olmadan üst-üstə düşən iki açarın generasiya olunması ehtimalı son dərəcə azdır. Bununla belə, üst-üstə düşmə halı olmuşdur: Windows 95 əməliyyat sistemində DOS-proqramların (.pif) və ZipMagic 2000 proqramının başlatma simgəsinin GUID-ləri üstə-üstə düşmüşdür.
Mətndə GUID defislərlə qruplara bölünmüş və fiqurlu mötərizəyə alınmış 32 ədəd onaltılıq rəqəmdən ibarət sətir şəklində yazılır. Məsələn:
{6F9619FF-8B86-D011-B42D-00CF4FC964FF}
Java proqramlaşdırma dilinin ehtimalını hesablamaq üçün proqram:
public void probabilityCoincidenceGUID()
{
MathContext mc = new MathContext(1000, RoundingMode.HALF_UP);
BigDecimal N = BigDecimal.valueOf(2).pow(128, mc);
BigDecimal n = BigDecimal.valueOf(2).pow(50, mc);
BigDecimal result_ = calcProbabilityCoincidenceGUID(N, n, mc);
double result = result_.doubleValue();
}
private BigDecimal calcProbabilityCoincidenceGUID(BigDecimal N, BigDecimal n, MathContext mc)
{
BigDecimal N_1 = N.subtract(BigDecimal.valueOf(1), mc);
BigDecimal N_n = N.subtract(n, mc);
BigDecimal ln_N = BigDecimalUtils.ln(N, 400);
BigDecimal ln_N_1 = BigDecimalUtils.ln(N_1, 400);
BigDecimal ln_N_n = BigDecimalUtils.ln(N_n, 400);
BigDecimal v1 = N.multiply(ln_N_1.subtract(ln_N_n, mc), mc);
BigDecimal v2 = n.multiply(ln_N_n.subtract(ln_N, mc).subtract(BigDecimal.valueOf(1), mc), mc);
BigDecimal v3 = ln_N_1.subtract(ln_N, mc).subtract(BigDecimal.valueOf(1), mc);
BigDecimal exp = v1.add(v2, mc).subtract(v3, mc);
BigDecimal result = BigDecimal.valueOf(1).subtract(BigDecimalUtils.exp(exp, 400));
return result;
}
© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search